package com.lin.generator;

import com.lin.model.MainTemplateConfig;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class DynamicGenerator {
    public static void DynamicFileGenerator(String inputDynamicGeneratorFile,String outputDynamicGeneratorFile,Object model) throws IOException, TemplateException {
//        //相对目录
//        String property = System.getProperty("user.dir");
//        String inputPath = "D:\\Code-Generate\\code-generate\\lin-code-generate-basic\\src\\main\\resources\\templates\\MainTemplate.java.ftl";
//        String outputPath = property + File.separator + "acm.html";
//        MainTemplateConfig mainTemplateConfig = new MainTemplateConfig();
//        mainTemplateConfig.setAuthor("lin");
//        mainTemplateConfig.setLoop(false);
//        mainTemplateConfig.setOutput("求和结果是");
//        doGenerator(inputPath,outputPath, mainTemplateConfig);
        doGenerator(inputDynamicGeneratorFile,outputDynamicGeneratorFile, model);
    }

    public static void doGenerator(String inputPath,String outputPath,Object dataModel) throws IOException, TemplateException {
        // 1：创建配置对象
        // new 出 Configuration 对象，参数为 FreeMarker 版本号
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);
        // 指定模板文件所在的路径
        configuration.setDirectoryForTemplateLoading(new File(inputPath).getParentFile());
        // 设置模板文件使用的字符集
        configuration.setDefaultEncoding("utf-8");
        // 创建模板对象，加载指定模板
        Template template = configuration.getTemplate(new File(inputPath).getName());
        // 2：指定生成的文件
        Writer out = new FileWriter(outputPath);
        // 4:生成文件
        template.process(dataModel, out);
        // 5:关闭流
        out.close();
    }
}
